﻿//bool isValid(char* s) {
//    int i = 0;
//    while (s[i])
//    {
//        switch (s[i])
//        {
//        case '(':
//        case '{':
//        case '[':
//            break;
//        case ')':
//            if (i > 0 && s[i - 1] == '(')
//            {
//                for (int j = i - 1; s[j] != 0; j++)
//                    s[j] = s[j + 1];
//                for (int j = i - 1; s[j] != 0; j++)
//                    s[j] = s[j + 1];
//                i -= 2;
//            }
//            break;
//        case ']':
//            if (i > 0 && s[i - 1] == '[')
//            {
//                for (int j = i - 1; s[j] != 0; j++)
//                    s[j] = s[j + 1];
//                for (int j = i - 1; s[j] != 0; j++)
//                    s[j] = s[j + 1];
//                i -= 2;
//            }
//            break;
//        case '}':
//            if (i > 0 && s[i - 1] == '{')
//            {
//                for (int j = i - 1; s[j] != 0; j++)
//                    s[j] = s[j + 1];
//                for (int j = i - 1; s[j] != 0; j++)
//                    s[j] = s[j + 1];
//                i -= 2;
//            }
//            break;
//        }
//        i++;
//    }
//    if (s[0] == 0)
//        return true;
//    return false;
//}

//void QueueInit(Que* pq)
//{
//	assert(pq);
//	pq->head = pq->tail = NULL;
//	pq->size = 0;
//}
//void QueueDestroy(Que* pq)
//{
//	assert(pq);
//	QNode* cur = pq->head;
//	while (cur)
//	{
//		QNode* next = cur->next;
//		free(cur);
//		cur = next;
//	}
//	pq->head = pq->tail = NULL;
//	pq->size = 0;
//}
//void QueuePush(Que* pq, QDataType x)
//{
//	assert(pq);
//	QNode* newnode = (QNode*)malloc(sizeof(QNode));
//	if (newnode == NULL)
//	{
//		perror("malloc fail");
//		exit(-1);
//	}
//	newnode->data = x;
//	newnode->next = NULL;
//	if (pq->tail == NULL)
//	{
//		pq->head = pq->tail = newnode;
//	}
//	else
//	{
//		pq->tail->next = newnode;
//		pq->tail = newnode;
//	}
//	pq->size++;
//}
//void QueuePop(Que* pq)
//{
//	assert(pq);
//	assert(!QueueEmpty(pq));
//	if (pq->head->next == NULL)
//	{
//		free(pq->head);
//		pq->head = pq->tail = NULL;
//	}
//	else
//	{
//		QNode* next = pq->head->next;
//		free(pq->head);
//		pq->head = next;
//	}
//	pq->size--;
//}
//QDataType QueueFront(Que* pq)
//{
//	assert(pq);
//	assert(!QueueEmpty(pq));
//	return pq->head->data;
//}
//QDataType QueueBack(Que* pq)
//{
//	assert(pq);
//	assert(!QueueEmpty(pq));
//	return pq->tail->data;
//}
//bool QueueEmpty(Que* pq)
//{
//	assert(pq);
//	return pq->head == NULL;
//}
//int QueueSize(Que* pq)
//{
//	assert(pq);
//	return pq->size;
//}